﻿using System;
using System.Data;
using System.Text.RegularExpressions;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DataInfo;
using KenLib.BusinessManager;
using System.Drawing;
using XBLib.Dal.AdoDal;
using System.Globalization; 

public partial class Org_frmO_BasicInfoInput : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((Org_MasterPage)this.Master).changeTitle("監理団体情報登録");
        ((Org_MasterPage)this.Master).HideLiArea("frmO_BasicInfoInput");

        if (Session["人コード"] == null)
        {
            Response.Redirect("../frmD_Login.aspx");
        }
        else if (Session["人コード"].ToString() == "")
        {
            Response.Redirect("../frmD_Login.aspx");
        }

        if (Request.UrlReferrer != null)
        {
            string PageRequest = Request.UrlReferrer.ToString();
            if (PageRequest.IndexOf("frmO_Manager.aspx") > 0)
            {
                Session.Remove("本社情報");
				if (Session["mode_action"] != null)
					Session.Remove("mode_action");
            }
			if (PageRequest.IndexOf("frmO_BasicInfoRef.aspx") > 0)
			{
				Session["mode_action"] = "update";
			}
        }
        else
        {
            Session.Remove("本社情報");
        }

        if (!IsPostBack)
        {
            if (Session["役"] != null && (Session["役"].ToString() == "2" || Session["役"].ToString() == "3"))
            {
				if (Session["本社情報"] == null && Session["mode_action"] == null)
                    Response.Redirect("frmO_BasicInfoInputCheck.aspx");
            }

			if (Session["mode_action"] != null) {
				btn_戻る.Visible = true;

				int 企業コード = 1;	//---SET CUNG ----
				LoadExists本社情報(企業コード);
			}

            bind社員ID();
            txt_組合名.Focus();
            bind事業内容();

            string ER00001 = GetError("ER00001");
            string ER00002 = GetError("ER00002");
            string ER00005 = GetError("ER00005");
            string ER00006 = GetError("ER00006");
            string ER00007 = GetError("ER00007");
            string ER00009 = GetError("ER00009");
            RequiredFieldValidator組合名.ErrorMessage = ER00001;
            CustomValidator組合名.ErrorMessage = ER00009;
            RequiredFieldValidator拠点名フリガナ.ErrorMessage = ER00001;
            RequiredFieldValidator郵便番号.ErrorMessage = ER00001;
            RequiredFieldValidator住所.ErrorMessage = ER00001;
            RequiredFieldValidator住所フリガナ.ErrorMessage = ER00001;
            RequiredFieldValidatorＴＥＬ1.ErrorMessage = ER00001;
            CustomValidatorＴＥＬ1.ErrorMessage = ER00002;
            RequiredFieldValidatorＴＥＬ2.ErrorMessage = ER00001;
            CustomValidatorＴＥＬ2.ErrorMessage = ER00002;
            RequiredFieldValidatorＴＥＬ3.ErrorMessage = ER00001;
            CustomValidatorＴＥＬ3.ErrorMessage = ER00002;
            RequiredFieldValidatorFAX1.ErrorMessage = ER00001;
            CustomValidatorFAX1.ErrorMessage = ER00002;
            RequiredFieldValidatorFAX2.ErrorMessage = ER00001;
            CustomValidatorFAX2.ErrorMessage = ER00002;
            RequiredFieldValidatorFAX3.ErrorMessage = ER00001;
            CustomValidatorFAX3.ErrorMessage = ER00002;
            RequiredFieldValidator設立年月日.ErrorMessage = ER00001;
            CustomValidator設立年月日.ErrorMessage = ER00005;
            CustomValidator設立年月日1.ErrorMessage = ER00006;
            CustomValidator出資金.ErrorMessage = ER00002;
            RequiredFieldValidator事業内容その他.ErrorMessage = ER00001;
            RequiredFieldValidator団体構成.ErrorMessage = ER00007;
            RequiredFieldValidator地域の詳細.ErrorMessage = ER00007;
            RequiredFieldValidator地域の詳細複数県.ErrorMessage = ER00001;
            RequiredFieldValidator職業紹介番号.ErrorMessage = ER00001;
            RequiredFieldValidator根拠法令.ErrorMessage = ER00001;
            RequiredFieldValidatorTextBox2.ErrorMessage = ER00001;
            RequiredFieldValidatortextbox6.ErrorMessage = ER00001;
            RegularExpressionValidator郵便番号.ErrorMessage = ER00002;
            CustomValidator設立年月日.ErrorMessage = ER00005;
            CustomValidator受入事業開始日.ErrorMessage = ER00005;
            CustomValidator受入事業開始日1.ErrorMessage = ER00006;
            RequiredFieldValidatorウェブサイト.ErrorMessage = ER00002;

            Reset本社情報();
        }
    }

    /// <summary>
    /// ham load du lieu len form khi co session 本社情報
    /// </summary>
    protected void Reset本社情報()
    {
            if (Session["本社情報"] != null)
            {
                本社情報 obj_本社情報 = new 本社情報();
                obj_本社情報 = (本社情報)Session["本社情報"];

                string[] arrＴＥＬ = new string[3];
                string[] arrFAX = new string[3];
                string[] arr直通ＴＥＬ = new string[3];
                string[] arr携帯ＴＥＬ = new string[3];
                string[] arr直通ＴＥＬ2 = new string[3];
                string[] arr携帯ＴＥＬ2 = new string[3];
                string[] arr直通ＴＥＬ3 = new string[3];
                string[] arr携帯ＴＥＬ3 = new string[3];

                char[] splitter = { '-' };

                arrＴＥＬ = obj_本社情報.ＴＥＬ.Split(splitter);
                arrFAX = obj_本社情報.FAX.Split(splitter);

                txt_組合名.Text = HttpUtility.HtmlDecode(obj_本社情報.企業名);
                txt_拠点名フリガナ.Text = HttpUtility.HtmlDecode(obj_本社情報.企業名フリガナ);
                TextBox1.Text = HttpUtility.HtmlDecode(obj_本社情報.企業名省略名称);
                txt_郵便番号.Text = obj_本社情報.郵便番号;
                txt_住所.Text = HttpUtility.HtmlDecode(obj_本社情報.住所);
                txt_住所フリガナ.Text = HttpUtility.HtmlDecode(obj_本社情報.住所フリガナ);
                txt_ＴＥＬ1.Text = arrＴＥＬ[0];
                txt_ＴＥＬ2.Text = arrＴＥＬ[1];
                txt_ＴＥＬ3.Text = arrＴＥＬ[2];
                txt_FAX1.Text = arrFAX[0];
                txt_FAX2.Text = arrFAX[1];
                txt_FAX3.Text = arrFAX[2];
                txt設立年月日.Text = DateTime.Parse(obj_本社情報.設立年月日.ToString()).ToString("yyyy/MM/dd");
                txt_出資金.Text = Session["資本金"].ToString();

                事業内容Manager frm_事業内容 = new 事業内容Manager();
                DataTable dt = frm_事業内容.frmO_BasicInfoInput_Select_事業内容();
                if (dt.Rows.Count > 0)
                {
                    string[] arr事業内容 = new string[2];
                    for (int i = 0; i < dt.Rows.Count; i++) {
                        arr事業内容 = dt.Rows[i]["ID"].ToString().Split(splitter);
                        if (arr事業内容[0] == obj_本社情報.事業内容ID.ToString()) {
                            ddl_事業内容.SelectedValue = dt.Rows[i]["ID"].ToString();
                            break;
                        }
                    }
                }

                txt_事業内容その他.Text = HttpUtility.HtmlDecode(obj_本社情報.事業内容その他);

                txt_ウェブサイト.Text = obj_本社情報.ウェブサイト;
                ddl_団体構成.SelectedValue = obj_本社情報.団体構成 == true ? "1" : "0";
                ddl_地域の詳細.SelectedValue = obj_本社情報.地域の詳細.ToString();
                txt_地域の詳細複数県.Text = HttpUtility.HtmlDecode(obj_本社情報.地域の詳細複数県);
                txt_職業紹介番号.Text = HttpUtility.HtmlDecode(obj_本社情報.職業紹介番号);
                txt_根拠法令.Text = HttpUtility.HtmlDecode(obj_本社情報.根拠法令);
                TextBox2.Text = HttpUtility.HtmlDecode(obj_本社情報.許可官庁);
                textbox6.Text = DateTime.Parse(obj_本社情報.受入事業開始日.ToString()).ToString("yyyy/MM/dd");
            }
    }

    protected void btn_登録_Click(object sender, EventArgs e)
    {
        SetValueForControl();
        bool isValidate = true;
        
        本社情報Manager frm_本社情報 = new 本社情報Manager();
        string 企業名 = txt_組合名.Text;
        int 企業分類コード = 4;
        bool Exist企業名 = false;

        if (Session["frmO_BasicInfoInputCheck_企業名"] != null)
        {
            // mode update
            if (Session["frmO_BasicInfoInputCheck_企業名"].ToString().ToLower().Trim() != 企業名.ToLower().Trim())
            {
                Exist企業名 = frm_本社情報.frmO_BasicInfoInput_Select_本社情報(企業名, 企業分類コード);
            }
        }
        else {
            // mode insert
			if (Session["mode_action"] == null)
				Exist企業名 = frm_本社情報.frmO_BasicInfoInput_Select_本社情報(企業名, 企業分類コード);
        }

        if (Exist企業名 == true)
        {
            isValidate = false;
            CustomValidator組合名.IsValid = false;
            return;
        }

        if (Session["リセット"] != null)
        {
            Session.Remove("リセット");
        }

        if(isValidate == true)
        {
            string TEL = txt_ＴＥＬ1.Text + "-" + txt_ＴＥＬ2.Text + "-" + txt_ＴＥＬ3.Text;
            string FAX = txt_FAX1.Text + "-" + txt_FAX2.Text + "-" + txt_FAX3.Text;

            本社情報 obj = new 本社情報();

            obj.廃止区分 = 0;
            obj.企業分類コード = 4;

            obj.企業名 = txt_組合名.Text;
            obj.企業名フリガナ = txt_拠点名フリガナ.Text;
            obj.企業名省略名称 = TextBox1.Text;
            obj.郵便番号 = txt_郵便番号.Text;
            obj.住所 = txt_住所.Text;
            obj.住所フリガナ = txt_住所フリガナ.Text;
            obj.ＴＥＬ = TEL;
            obj.FAX = FAX;
            obj.設立年月日 = DateTime.Parse(txt設立年月日.Text);
            //obj.資本金 = txt_出資金.Text.Length > 0 ? Double.Parse(txt_出資金.Text) : 0;
            Session["資本金"] = txt_出資金.Text.Length > 0 ? txt_出資金.Text : "0";
            int len_cut = Int32.Parse(ddl_事業内容.SelectedValue.IndexOf("-").ToString());
            if (len_cut > 0)
            {
                obj.事業内容ID = Int32.Parse(ddl_事業内容.SelectedValue.Substring(0, len_cut));
            }
            else {
                obj.事業内容ID = Int32.Parse(ddl_事業内容.SelectedValue);
            }
            obj.事業内容 = ddl_事業内容.SelectedItem.ToString();
            obj.事業内容その他 = txt_事業内容その他.Text.Trim();

            obj.ウェブサイト = txt_ウェブサイト.Text;
            obj.団体構成 = ddl_団体構成.SelectedValue.Equals("1") ? true : false;     
            obj.地域の詳細 = Int32.Parse(ddl_地域の詳細.SelectedValue);        
            obj.地域の詳細複数県 = txt_地域の詳細複数県.Text;
            obj.職業紹介番号 = txt_職業紹介番号.Text;
            obj.根拠法令 = txt_根拠法令.Text;
            obj.許可官庁 = TextBox2.Text;
            obj.受入事業開始日 = DateTime.Parse(textbox6.Text);

            Session["本社情報"] = obj;

            Response.Redirect("frmO_BasicInfoInputCheck.aspx");
        }
    }

    /// <summary>
    /// load du lieu vao dropdownList 事業内容
    /// </summary>
    public void bind事業内容()
    {
        事業内容Manager frm_事業内容 = new 事業内容Manager();
        DataTable dt = frm_事業内容.frmO_BasicInfoInput_Select_事業内容();
        if (dt.Rows.Count > 0)
        {
            ddl_事業内容.DataSource = dt;
            ddl_事業内容.DataTextField = "事業内容";
            ddl_事業内容.DataValueField = "ID";

            ddl_事業内容.DataBind();
            ddl_事業内容.Items.Insert(0, new ListItem("[選択]", "-1"));
        }
    }

    public void bind社員ID()
    {
        //try
        //{
        //    frmO_BasicInfoInputManager frm = new frmO_BasicInfoInputManager();
        //    DataTable dt = frm.Select社員ID();
        //    ddl_社員ID.DataSource = dt;
        //    ddl_社員ID.DataTextField = "氏名";
        //    ddl_社員ID.DataValueField = "社員ID";
        //    ddl_社員ID.DataBind();

        //    ListItem 選択 = new ListItem("-選択-", "-1");
        //    ddl_社員ID.Items.Insert(0, 選択);
        //}
        //catch { }
    }
    public void ClearForm() 
    {
        if (Session["本社情報"] != null)
            Session.Remove("本社情報");

        txt_組合名.Text = "";
        txt_拠点名フリガナ.Text = "";
        TextBox1.Text = "";
        txt_郵便番号.Text = "";
        txt_住所.Text = "";
        txt_住所フリガナ.Text = "";
        txt_ＴＥＬ1.Text = "";
        txt_ＴＥＬ2.Text = "";
        txt_ＴＥＬ3.Text = "";
        txt_FAX1.Text = "";
        txt_FAX2.Text = "";
        txt_FAX3.Text = "";
        txt設立年月日.Text = "";
        txt_出資金.Text = "";
        ddl_事業内容.SelectedValue = "-1";

        txt_ウェブサイト.Text = "";
        ddl_団体構成.SelectedValue = "-1";   
        ddl_地域の詳細.SelectedValue = "-1";        
        txt_地域の詳細複数県.Text = "";
        txt_職業紹介番号.Text = "";
        txt_根拠法令.Text = "";
        TextBox2.Text = "";
        textbox6.Text = "";   

    }

    /// <summary>
    /// load du lieu len form khi o mode update
    /// </summary>
    protected void LoadExists本社情報(int 企業コード)
    {
        frmO_BasicInfoInputManager frm_manager = new frmO_BasicInfoInputManager();
        DataTable dt = frm_manager.SelectExists本社情報(企業コード);
        if (dt.Rows.Count > 0)
        {
            本社情報 obj = new 本社情報();
            obj.企業名 = HttpUtility.HtmlDecode(dt.Rows[0]["企業名"].ToString());
			obj.企業名フリガナ = HttpUtility.HtmlDecode(dt.Rows[0]["企業名フリガナ"].ToString());
			obj.企業名省略名称 = HttpUtility.HtmlDecode(dt.Rows[0]["企業名省略名称"].ToString());
            obj.郵便番号 = dt.Rows[0]["郵便番号"].ToString();
			obj.住所 = HttpUtility.HtmlDecode(dt.Rows[0]["住所"].ToString());
			obj.住所フリガナ = HttpUtility.HtmlDecode(dt.Rows[0]["住所フリガナ"].ToString());
            obj.ＴＥＬ = dt.Rows[0]["ＴＥＬ"].ToString();
            obj.FAX = dt.Rows[0]["FAX"].ToString();
            obj.設立年月日 = DateTime.Parse(dt.Rows[0]["設立年月日"].ToString());
            obj.資本金 = Double.Parse(dt.Rows[0]["資本金"].ToString());
			Session["資本金"] = obj.資本金;
            if (dt.Rows[0]["事業内容ID"].ToString() != "")
            {
                obj.事業内容ID = Int32.Parse(dt.Rows[0]["事業内容ID"].ToString());
            }
            else
            {
                obj.事業内容ID = -1;
            }
			obj.事業内容その他 = HttpUtility.HtmlDecode(dt.Rows[0]["事業内容その他"].ToString());
            obj.ウェブサイト = dt.Rows[0]["ウェブサイト"].ToString();
            obj.団体構成 = Boolean.Parse(dt.Rows[0]["団体構成"].ToString());
            obj.地域の詳細 = Int32.Parse(dt.Rows[0]["地域の詳細"].ToString());
			obj.地域の詳細複数県 = HttpUtility.HtmlDecode(dt.Rows[0]["地域の詳細複数県"].ToString());
			obj.職業紹介番号 = HttpUtility.HtmlDecode(dt.Rows[0]["職業紹介番号"].ToString());
			obj.根拠法令 = HttpUtility.HtmlDecode(dt.Rows[0]["根拠法令"].ToString());
			obj.許可官庁 = HttpUtility.HtmlDecode(dt.Rows[0]["許可官庁"].ToString());
            obj.受入事業開始日 = DateTime.Parse(dt.Rows[0]["受入事業開始日"].ToString());
            Session["本社情報"] = obj;
        }
    }
    protected void btn_リセット_Click(object sender, EventArgs e)
    {
        if (Session["リセット"] != null) {
            Session.Remove("本社情報");
			int 企業コード = Int32.Parse(Session["企業コード_2"].ToString());
			LoadExists本社情報(企業コード);
            Reset本社情報();
        }
        else {
            ClearForm();
        }
    }

    /// <summary>
    /// chuyen doi ki tu < >
    /// </summary>
    /// <param name="root"></param>
    /// <returns></returns>
    public static Control[] FlattenHierachy(Control root)
    {
        List<Control> list = new List<Control>();
        list.Add(root);
        if (root.HasControls())
        {
            foreach (Control control in root.Controls)
            {
                list.AddRange(FlattenHierachy(control));
            }
        }
        return list.ToArray();
    }
    protected void SetValueForControl()
    {
        Control[] allControls = FlattenHierachy(Page);
        foreach (Control control in allControls)
        {
            TextBox textBox = control as TextBox;
            if (textBox != null)
            {
                textBox.Text = textBox.Text.Replace("<", "&lt;");
                textBox.Text = textBox.Text.Replace(">", "&gt;");
            }
        }
    }

    /// <summary>
    /// ham lay loi tu database
    /// </summary>
    /// <param name="errorid"></param>
    /// <returns></returns>
    public String GetError(string errorid)
    {
        string error = "";
        Error er = new Error();
        er.ErrorID = errorid;
        ErrorManager frm_error = new ErrorManager();
        DataTable dt = frm_error.getError(er);
        if (dt.Rows.Count > 0)
            error = dt.Rows[0][2].ToString();
        return error;
    }
	protected void btn_戻る_Click(object sender, EventArgs e)
	{
		Response.Redirect("frmO_BasicInfoRef.aspx");
	}
}
